{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "#根据之前调试的max_depth 和min_child_weight 两个参数，再次重新调整n_estimators参数\n",
    "# 导入必要的工具包\n",
    "import pandas as pd\n",
    "import xgboost as xgb\n",
    "import numpy as np\n",
    "from  xgboost import XGBClassifier\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dbpath = \"./data/\"\n",
    "train = pd.read_csv(dbpath + \"RentListingInquries_FE_train.csv\");\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 49352 entries, 0 to 49351\n",
      "Columns: 228 entries, bathrooms to interest_level\n",
      "dtypes: float64(9), int64(219)\n",
      "memory usage: 85.8 MB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>49352.00000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.0</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.21218</td>\n",
       "      <td>1.541640</td>\n",
       "      <td>3.830174e+03</td>\n",
       "      <td>1.697863e+03</td>\n",
       "      <td>1.657567e+03</td>\n",
       "      <td>-0.329460</td>\n",
       "      <td>2.753820</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.014852</td>\n",
       "      <td>15.206881</td>\n",
       "      <td>...</td>\n",
       "      <td>0.003080</td>\n",
       "      <td>0.000385</td>\n",
       "      <td>0.186477</td>\n",
       "      <td>0.009361</td>\n",
       "      <td>0.000446</td>\n",
       "      <td>0.028165</td>\n",
       "      <td>0.002026</td>\n",
       "      <td>0.001013</td>\n",
       "      <td>0.000952</td>\n",
       "      <td>1.616895</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.50142</td>\n",
       "      <td>1.115018</td>\n",
       "      <td>2.206687e+04</td>\n",
       "      <td>1.100477e+04</td>\n",
       "      <td>7.817996e+03</td>\n",
       "      <td>0.947732</td>\n",
       "      <td>1.446091</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.824442</td>\n",
       "      <td>8.280749</td>\n",
       "      <td>...</td>\n",
       "      <td>0.055412</td>\n",
       "      <td>0.019618</td>\n",
       "      <td>0.389495</td>\n",
       "      <td>0.101625</td>\n",
       "      <td>0.021109</td>\n",
       "      <td>0.165446</td>\n",
       "      <td>0.044969</td>\n",
       "      <td>0.031814</td>\n",
       "      <td>0.030846</td>\n",
       "      <td>0.626035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.300000e+01</td>\n",
       "      <td>2.150000e+01</td>\n",
       "      <td>4.300000e+01</td>\n",
       "      <td>-5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.500000e+03</td>\n",
       "      <td>1.225000e+03</td>\n",
       "      <td>1.066667e+03</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.150000e+03</td>\n",
       "      <td>1.500000e+03</td>\n",
       "      <td>1.383417e+03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>4.100000e+03</td>\n",
       "      <td>1.850000e+03</td>\n",
       "      <td>1.962500e+03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>10.00000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>4.490000e+06</td>\n",
       "      <td>2.245000e+06</td>\n",
       "      <td>1.496667e+06</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>13.500000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         bathrooms      bedrooms         price  price_bathrooms  \\\n",
       "count  49352.00000  49352.000000  4.935200e+04     4.935200e+04   \n",
       "mean       1.21218      1.541640  3.830174e+03     1.697863e+03   \n",
       "std        0.50142      1.115018  2.206687e+04     1.100477e+04   \n",
       "min        0.00000      0.000000  4.300000e+01     2.150000e+01   \n",
       "25%        1.00000      1.000000  2.500000e+03     1.225000e+03   \n",
       "50%        1.00000      1.000000  3.150000e+03     1.500000e+03   \n",
       "75%        1.00000      2.000000  4.100000e+03     1.850000e+03   \n",
       "max       10.00000      8.000000  4.490000e+06     2.245000e+06   \n",
       "\n",
       "       price_bedrooms     room_diff      room_num     Year         Month  \\\n",
       "count    4.935200e+04  49352.000000  49352.000000  49352.0  49352.000000   \n",
       "mean     1.657567e+03     -0.329460      2.753820   2016.0      5.014852   \n",
       "std      7.817996e+03      0.947732      1.446091      0.0      0.824442   \n",
       "min      4.300000e+01     -5.000000      0.000000   2016.0      4.000000   \n",
       "25%      1.066667e+03     -1.000000      2.000000   2016.0      4.000000   \n",
       "50%      1.383417e+03      0.000000      2.000000   2016.0      5.000000   \n",
       "75%      1.962500e+03      0.000000      4.000000   2016.0      6.000000   \n",
       "max      1.496667e+06      8.000000     13.500000   2016.0      6.000000   \n",
       "\n",
       "                Day       ...                walk         walls           war  \\\n",
       "count  49352.000000       ...        49352.000000  49352.000000  49352.000000   \n",
       "mean      15.206881       ...            0.003080      0.000385      0.186477   \n",
       "std        8.280749       ...            0.055412      0.019618      0.389495   \n",
       "min        1.000000       ...            0.000000      0.000000      0.000000   \n",
       "25%        8.000000       ...            0.000000      0.000000      0.000000   \n",
       "50%       15.000000       ...            0.000000      0.000000      0.000000   \n",
       "75%       22.000000       ...            0.000000      0.000000      0.000000   \n",
       "max       31.000000       ...            1.000000      1.000000      1.000000   \n",
       "\n",
       "             washer         water    wheelchair          wifi       windows  \\\n",
       "count  49352.000000  49352.000000  49352.000000  49352.000000  49352.000000   \n",
       "mean       0.009361      0.000446      0.028165      0.002026      0.001013   \n",
       "std        0.101625      0.021109      0.165446      0.044969      0.031814   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "50%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "75%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "max        2.000000      1.000000      1.000000      1.000000      1.000000   \n",
       "\n",
       "               work  interest_level  \n",
       "count  49352.000000    49352.000000  \n",
       "mean       0.000952        1.616895  \n",
       "std        0.030846        0.626035  \n",
       "min        0.000000        0.000000  \n",
       "25%        0.000000        1.000000  \n",
       "50%        0.000000        2.000000  \n",
       "75%        0.000000        2.000000  \n",
       "max        1.000000        2.000000  \n",
       "\n",
       "[8 rows x 228 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.describe()\n",
    "#从下表中看到年度属性标准差为0，表示这个属性没有值的变化，可以抛弃。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11632c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.interest_level);\n",
    "pyplot.xlabel('interest_level');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    1\n",
       "1    2\n",
       "2    0\n",
       "3    2\n",
       "4    2\n",
       "Name: interest_level, dtype: int64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#去掉year属性\n",
    "y_train = train['interest_level']\n",
    "y_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = train.drop([\"interest_level\",\"Year\"],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>Wday</th>\n",
       "      <th>...</th>\n",
       "      <th>virtual</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 226 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Month  Day  Wday  ...   virtual  walk  walls  war  washer  water  \\\n",
       "0       4.5      6   24     4  ...         0     0      0    0       0      0   \n",
       "1       3.0      6   12     6  ...         0     0      0    0       0      0   \n",
       "2       2.0      4   17     6  ...         0     0      0    0       0      0   \n",
       "3       2.0      4   18     0  ...         0     0      0    0       0      0   \n",
       "4       5.0      4   28     3  ...         0     0      0    1       0      0   \n",
       "\n",
       "   wheelchair  wifi  windows  work  \n",
       "0           0     0        0     0  \n",
       "1           0     0        0     0  \n",
       "2           0     0        0     0  \n",
       "3           0     0        0     0  \n",
       "4           0     0        0     0  \n",
       "\n",
       "[5 rows x 226 columns]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)\n",
    "def modelfit(alg,X_train,y_train,cv_folds=None,early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param[\"num_class\"] = 9\n",
    "    xgtrain = xgb.DMatrix(X_train,label=y_train)\n",
    "    #此处尝试使用bin文件\n",
    "    dbpath = \"./data/\"\n",
    "    #xgtrain = xgb.DMatrix(dbpath + \"RentListingInquries_FE_train.bin\")\n",
    "    cvresult = xgb.cv(xgb_param,xgtrain,num_boost_round=alg.get_params()[\"n_estimators\"],\n",
    "                          folds=cv_folds,metrics='mlogloss',early_stopping_rounds=early_stopping_rounds)\n",
    "    #此处将结果保存为第二次调整的文件\n",
    "    cvresult.to_csv(\"2_nestimators.csv\",index_label=\"n_estimators\")\n",
    "    \n",
    "    #取到最佳参数\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    #采用最佳参数，训练模型\n",
    "    alg.set_params(n_estimators=n_estimators)\n",
    "    alg.fit(X_train,y_train,eval_metric='mlogloss')\n",
    "    \n",
    "xgb2 = XGBClassifier(\n",
    "            learn_rate=0.1,\n",
    "            n_estimators=235,\n",
    "            max_depth = 6,#此处调整参数从5改为6\n",
    "            min_child_weight=4,#此处调整参数从1 改为4\n",
    "            gamma=0,\n",
    "            subsample=0.3,\n",
    "            colsample_bytree=0.8,\n",
    "            colsample_bylevel=0.7,\n",
    "            objective='multi:softprob',\n",
    "            seed=3\n",
    ")\n",
    "#此步骤已经完成，下面的程序直接读取CSV数据文件\n",
    "modelfit(xgb2,X_train,y_train,cv_folds=kfold)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "function modelfit completed.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(210, 5)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(\"function modelfit completed.\")\n",
    "cvresult = pd.read_csv(\"2_nestimators.csv\")\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "\n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "cvresult.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10e6fb00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_axis = range(0, cvresult.shape[0])\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "#pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEXCAYAAACH/8KRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmcXFWZ//HPt6rXLJ21Q3YSICyCyBLZRGQRDTgDuLGqBNlHRHBAYcaXvxlGENBxQwQCAjoquwqyCrIpAibBsCRACElIOvve6fSS7q7n98e5ldx0qrurl+qq7n7er9dNV5271FO3O/XUOefec2RmOOecc52VyHcAzjnnejdPJM4557rEE4lzzrku8UTinHOuSzyROOec6xJPJM4557rEE4lzXSTpPyTdke84nMsXTyT9gKRBkhZLOjNWNljSEklfiJVNlfSopA2SNkqaJ+laScOi9dMlNUuqiZaFki7OcexHS6rK5Wt0RKZ4zOw6MzsvR6+3WNInc3HsXOip31dvOy99nSeSfsDMaoALgJ9KqoyKbwRmmdmDAJKOAJ4HXgL2NrOhwDSgCfhI7HAvm9kgMxsEfAG4UdKBPfNOXEdIKsp3DK6fMDNf+skC3A3cAxwNrAPGxNb9Dbipnf2nA39rUfYP4MzY85OAucBGQmLaJ7Zun6hsY7TNSbF1JwLzgM3AMuAKYCBQB6SAmmgZ28r7uhl4LNr/VWD3LM7H3sDTwHrgXeDUzsQD/Bfwm2i/SYAB5wBLgQ3ARcBHgTei9/7z2OvsDjwb/T7WAr8Fhkbr/i96rbrotb6VxTleDHw7eq0GoCh6vix6L+8Cx2U4F4cBK4FkrOyzwBvR40OAWUA1sAr4USvn9GigqpV1Q4BfA2uAD4DvAIloXRL43+gcLAIuic5jUSvHWgx8spV15wMLot/rI+m/GUDAj4HVwKboHO3X2u873/9fe9OS9wB86cFfNgwDVkT/Wc+JlQ8EmoGj29l/OrFEEn04bgT2jJ7vCWwBjgeKgW9F/6FLoucLgP+Inh8b/afdK9p3BfDxWJwHRY9b/WCKxXF39KFxSPTB+Vvg3nb2GUj4oD8n2ueg6Lzs29F4yJxIbgXKgE8B9cAfgVHAuOiD7BPR9ntE56sUqAReBH4SO/YOH5htnePY9nOACUA5sFf0PsfG4suYZIH3geNjzx8Arooevwx8OXo8CDislWO0+vsiJJGHgcFRHPOBc6N1FxE+yMdH5/sZOpFIor+rtdHvsxS4CXgxWvdpYDYwlJBU9iH6MtXa79uX7BZv2upHzGwD4ZvsAOD3sVXDCM2cK9MFkm6M+km2SPpObNvDovIaQm3k/4D3onWnAY+Z2dNm1gj8kPBhdgThG+8g4Hoz22pmzwKPAmdE+zYCH5JUYWYbzOy1Dr6935vZP8ysiZBIDmhn+38BFpvZXWbWFL3eQ4Tmuu6I53/MrN7M/kz44L/HzFab2TLgr8CBAGa2IDpfDWa2BvgR8Ik2jtvWOU77mZktNbM6wheE0ui9FJvZYjN7v5Vj30P0+5A0mPAt/Z7Y+dhD0kgzqzGzVzpyMiQlo9ivNrPNZraYUAP5crTJqcBPzawq+ju9viPHjzkLuNPMXjOzBuBq4HBJk6L3MJhQE5WZvW1mK2Lvryu/737NE0k/IulLhG+CzwA3xFZtIDShjEkXmNm3LPST/IHwjT3tFTMbaqGPZDSwL3BdtG4sockifYwU4dvwuGjd0qgs7YNoHcDnCR9cH0h6QdLhHXx7K2OPawlJqy27AodGSXGjpI2ED6HR3RTPqtjjugzPBwFIGiXpXknLJFUDvwFGtnHcts5x2tLY+gXAZYRa0+rotca2cuzfAZ+TVAp8DnjNzNKvdS6hNvSOpJmS/qWNGDMZSaiJfhAri//+x8bjbvG4I1qenxpCs+G46MvLzwnNoKskzZBUEW3a1d93v+aJpJ+QNIrQPnw+cCFwqqSjAMxsC6Ff4XMdOaaZrSJ8i//XqGg54QM6/ZoiNLEsi9ZNkBT/m5sYrcPMZprZyYTmnz8C96dfpiMxdcBS4IUoKaaXQWZ2cQ/H8/3omPubWQXwJUKzS1rL12vrHGfcx8x+Z2ZHRvsZO36JiG83j/AhfAJwJiGxpNe9Z2ZnEM7HDcCDkgZm/zZZS/jWv2usbNvvn9C0ND62bkIHjh3X8vwMBEaw/e/sZ2Z2MOEL0J7AlVF5a79vlwVPJP3Hz4E/mtlzUXX+W8Dt0bdPoudflXRVlHSQNB6Y3NoBJY0gdMjOjYruBz4j6ThJxcC/Ezp8/05IVFuAb0kqlnQ0IQHdK6lE0lmShkTNNdWEJhkI3+RHSBrSTech7VFgT0lfjuIplvRRSfv0cDyDCR3pGyWNI/pgi1kF7BZ73tY53omkvSQdG/2e6wm1oeZM20Z+B1wKHEXoI0kf50uSKqMa0MaouNXjSCqLL4Qa7/3AtdGl57sC3yTUwNLv6xuSxkkaSrhAoD3FLV6nKIr/HEkHRO/5OuBVM1sc/X4Pjc7bluh8NLfz+3bZyHcnjS+5X4BTCN/UhrYo/wtwbez5ocDjhA+KjcBbwLXAiGj9dMJ/sPQVS6sJbeijYsf4LKHTdBPwAlHndbRu36hsU7TNZ6PyEuBJQhNbNTATODK2352E5omNtH7V1vdiz4+mnQ76aLu9CFd6rYmO/yyhb6VD8ZC5s70otn0VsQsZCB+e34mdk9nR+ZxDSAxVsW1PBpZEr3VFFud4MTt2zu9P6MvaTLgg4dFM5zC2/UTCh/5jLcp/E/2+awhfHE5pZf+jo/ffctmD0Bf3m+h8LwW+y/artooINeZ1hKu2LifUYNTK6yzO8Brfi9ZdRLhwIP1+x0flxxGu1Kph+xVyg9r7ffvS/qLoBDvnXMGQdAJwq5nt2u7GLu+8acs5l3eSyiWdKKkoauL7f4QLPVwv4DUS12dJ+jjwRKZ1Fq46cwVC0gBCM93ehH6cx4BvmFl1XgNzWclpIpE0Dfgp4a7VO8xsp2vDJZ1KaGM24HUzOzMqbwbejDZbYmYnReWTgXuB4cBrhJuktubsTTjnnGtTzhJJdAPSfMIduFWEDqwzLFximN5mCuFqjWPNbIOkUWa2OlpXk+lbo6T7CTef3SvpVkLyuSUnb8I551y7cjmo2yHAAjNbCCDpXsIVKPNi25wP3GzhTlbSSaQ10TXzxxKucQf4FaE202YiGTlypE2aNKnj78A55/qx2bNnrzWzyva2y2UiGceOd6dWES4vjdsTQNJLhOav/zKzJ6N1ZZJmEUafvd7M/ki4sWijhWEw0sccRzsmTZrErFmzOv1GnHOuP5L0Qftb5TaRKENZy3a0ImAK4drz8cBfJe1nZhuBiWa2XNJuwLOS3iRc493eMcOLSxcQhk5n4sSJnXsHzjnn2pXLy3+r2HGYg/GEm+JabvOwmTWa2SLCENdTAMxsefRzIWGo7AMJNxEN1fZ5FjIdk2i/GWY21cymVla2WzNzzjnXSblMJDOBKZImSyoBTifMDRD3R+AYAEkjCU1dCyUNSw/dEZV/DJhn4cqA59g+QuvZhGGpnXPO5UnOEknUj3EJ8BTwNnC/mc2VdI2kk6LNngLWSZpHSBBXmtk6wjwBsyS9HpVfH7va69vANyUtIPSZ/DJX78E551z7+sUNiVOnTjXvbHfOuY6RNNvMpra3nQ+R4pxzrks8kTjnnOsSTyTOOee6xBNJG0677WVOu+3lfIfhnHMFLZc3JPZ6YdKWfEfhnHOFzRNJK8yMhWu30NRspFJGIpHpRn3nnHPetNUKSQwsLWJjXSMfv/E5b+JyzrlWeI2kDbsMLmVLQxPLNtYxsDSZ73Ccc64g+Q2J7ahvbOag/3mahsYU+46roLw4yX0XHt7NETrnXOHxGxK7SVlxkj1HDUKC91bV0Jzq+4nXOec6whNJFkqLk+wxahB1jc0sWFPDqbf+3ftMnHMu4okkC/ddeDhPXnYUu44YwMbaRhatq6U/NAk651w2vLO9A0ZXlNHYlGL5pnpKktpWK/E+E+dcf+aJpAPuu/BwzIxDrn2GZRvrKU4m2KWiLN9hOedcXnki6SBJTB45kMZmY/G6WoqSCa+ZOOf6Ne8j6YT7LzqCv199LINKi3h/dQ3rt2zNd0jOOZc3nkg6aUBJEXuNHszA0iIWRMnEB3l0zvVHnki6oCgh9ho9mAGlSRasrmFDrddMnHP9jyeSLrjvwsN56OIj2Hv0YAaUJHlvVQ2vV230Wolzrl/xRNINihIJ9h49mEGlRdQ3plixqc7vM3HO9Rs+1lY3+uItf+efSzfSlDJGDS5l0ogB3H/RETl/Xeecy4WCGGtL0jRJ70paIOmqVrY5VdI8SXMl/S4qO0DSy1HZG5JOi21/t6RFkuZEywG5fA8dkUiIsuIEY4aUsXpzA/NX1fCFW3w4Fedc35az+0gkJYGbgeOBKmCmpEfMbF5smynA1cDHzGyDpFHRqlrgK2b2nqSxwGxJT5nZxmj9lWb2YK5i76z7Ljx8W9IoLUqweF0tb6+oZs9dBuc5Muecy51c3pB4CLDAzBYCSLoXOBmYF9vmfOBmM9sAYGaro5/z0xuY2XJJq4FKYCMFLn1T4mm3vUxJUYIFq2uYt6Kak276G+UlPgS9c67vyWXT1jhgaex5VVQWtyewp6SXJL0iaVrLg0g6BCgB3o8VXxs1ef1YUmmmF5d0gaRZkmatWbOma++kk4YNKGGfMRU0p4y5K6qprmv0e02cc31OLhNJpknOW/bsFwFTgKOBM4A7JA3ddgBpDPB/wDlmloqKrwb2Bj4KDAe+nenFzWyGmU01s6mVlZVdeR+dct+Fh3PfhYczqLSIfcdWUJwUb6/czJL1taRS5gnFOddn5DKRVAETYs/HA8szbPOwmTWa2SLgXUJiQVIF8BjwHTN7Jb2Dma2woAG4i9CEVtDKipPsO6aCykElrNhUz5vLN1G7tSnfYTnnXLfIZSKZCUyRNFlSCXA68EiLbf4IHAMgaSShqWthtP0fgF+b2QPxHaJaCpIEnAK8lcP30GXpmklRMsFulYPYa5dBNKeMt5ZXs7K63ifJcs71ejm9j0TSicBPgCRwp5ldK+kaYJaZPRIlg/8FpgHNwLVmdq+kLxFqG3Njh5tuZnMkPUvoeBcwB7jIzGraiqOn7iPJxmm3vUxjc4qFa7awsa6RoQOK2W3kQIqTIad7Z7xzrlBkex+J35CYJ6fe+ndWVTewZH0tRUmxe+UghpQXb1vvCcU5l28FcUOia50kRg8pY9+xFSQT4p2Vm1m8dguNzeGaAu+Md871Fl4jybPTbnuZ5pSxZH0tqzc3kBCMH1bO6IoyQstf4DUU51xP8xpJL3HfhYfz4MVHMHnkQPYfN4SKsmKWrK/j7ZWbqdvaDMC8FdVeO3HOFSyfareAlJck2XOXQayt2cridVt4Y9kmRg0uJRXVGn1KX+dcIfKmrQKTThaNzSmWbahj9eYGDBg3tIzRQ8opSnhzl3OuZ/hVWzG9KZGkpRNKfWMzc5dX05QyihJizJAydqkoI+kJxTmXY55IYnpjIkk77baXmbeimonDB1C1oY5NdY0UJ8XYIeVUDi7dIaGkeWJxznUHTyQxvTmRADt0tG+ub6RqQx3V9U0UJcSoilJGV5Rtu6ExzhOKc64rPJHE9PZEktYyoazYVM+G2kYkqBxUyughZZQXJ3fazxOKc64zPJHE9JVEkhZPKHVbm1lRXc/amgbMYNiAYsYMKWNwWfFO+3lCcc51hCeSmL6WSNLiCaWxOcXK6npWVTfQnDIGlRYxZkgZwwYU73BjY5wnFudcWzyRxPTVRJIWTyjNKWPN5gZWVtfT0JSiOClGDCxh+MASBpUW7ZRU5q2o5kNjKjypOOd2km0i8RsS+5hkIozhtUtFKetrG1lX08Cq6gZWVjdQkkwwfGAJIwaWMLA0uUNSaXnnvCcW51y2vEbSB7VMCk2pFBu2NLJ+y1Y21TViQElRghEDS9hU18h+Yyu8+cs5txNv2orpb4kkLdP4XE3NKTbUNrJuy1aqo6RSWrS9pjKgJNlqUgFPLM71J55IYvprIklrbcDHpuYUc5dXU1qcZFNdIwBFCTGkvJiK8mKGlBVRmuFy4kw8wTjX93giienviaSleGJJd7Y3NqfYWNtIdX0jm+oaaWwOfxelRYltiaWirCjjjY+ZeGJxrvfzRBLjiSSz9PArHxpTsUO5mVHXmKK6rpFN9Y1U1zWSiv5MBpYktyWVwWXFGYdoSfMrwpzr3TyRxHgiaV9b852kzNjS0MSmuiaq6xqpaWjCAAGDSosYXF7E4NIiBpQUUZzUtj6WTEkqzhOMc4XNE0mMJ5LsZTOBVnPK2FzfSHV9SCxbogm4AJISg8uKqCgvZm1NAx8aU9FmraUtnmicy6+CSCSSpgE/BZLAHWZ2fYZtTgX+CzDgdTM7Myo/G/hOtNn3zOxXUfnBwN1AOfA48A1r5014Ium8bBNLTUMTdY3N1G1tprq+kfrG1Lb1ZcUJBpYUMaAkycDS8DPbvpaWvLnMuZ6T90QiKQnMB44HqoCZwBlmNi+2zRTgfuBYM9sgaZSZrZY0HJgFTCUkmNnAwdE2/wC+AbxCSCQ/M7Mn2orFE0n3yXbK361NKd5ZWc3wgaXUbm1iy9ZmtjZtTy4lyQQDSpMMLEkyIEoyJUUJEm1cegzeXOZcTyqEO9sPARaY2cIooHuBk4F5sW3OB242sw0AZrY6Kv808LSZrY/2fRqYJul5oMLMXo7Kfw2cArSZSFz3aflB3VpiKSlKUJRMMH5Y+baypuYUW7Y2h8TS0MyWrU1srG3cYb/SogSlRQnKipOUFScoLUpue55NE1m2ic4TjnPdJ5eJZBywNPa8Cji0xTZ7Akh6idD89V9m9mQr+46LlqoM5TuRdAFwAcDEiRM79w7uPAGat8L5f+nc/v1AtokFoCiZYEh5uJw4rTll1G5tpr4xLA1NKeobm1m/ZStNqR1ry0UJkTJjweqabYkm/EzuMAVxNjLF6bUd5zonl4kk0//slu1oRcAU4GhgPPBXSfu1sW82xwyFZjOAGRCatrILuYVVcyHVBM1NkPRhybIR/7DNpnaQTITO+cFlO5/fpubUtsRS35SioTHF+tqtbK5vYt2WrTtsW5wUZUXbazFFSVES1WRKkwkSnezwj8u2tpNJe0mqJU9arjfJ5adjFTAh9nw8sDzDNq+YWSOwSNK7hMRSRUgu8X2fj8rHt3PM7jN4DKx9B2beAYddlLOX6ava+zBs74O5KBmaxwaWbv8zrV/RzIfGVJBKGfVNzdQ3Rokm+rmxrpHG5q07HUsKNZpkQhQnE5QkE+FnkShKJEgmRFPKqN3aRFEiQVFC3ZJ8OiubpNXR5NQRLY/tic21JZeJZCYwRdJkYBlwOnBmi23+CJwB3C1pJKGpayHwPnCdpGHRdp8Crjaz9ZI2SzoMeBX4CnBTzt7B116B33wOnvoPePMhOP/pnL1Uf9Tah1M2H6KJhKJO+p3XpcxoajYaokSztTlFcyqUNaVSNDWHq8wam1O0aD3jzWXV219DocZUlEhQlBRFCUXJaOfnCQHascosRCIBCYUmueaUkRBtjmVWqLpSG2spFwkwV0n1vgsPb/W9Z5tc2zp3rcXd2xJ3zhKJmTVJugR4itD/caeZzZV0DTDLzB6J1n1K0jygGbjSzNYBSPofQjICuCbd8Q5czPbLf58glx3tEpz4Q7jpYNi4KGcv43bUlQQD4YO7pCg0bQ0ua307M6M5SjrNKeP9NTWMG1pOU8poSlmUfFLbntc3RgkptXMCysasDzaQEDtd+qyoLCza9liEpCiF9xSWkESTEs0po76xGUkoOo4U7uWRhJntFGe6LJ0ke2NS60mtjf6QXpfL1+2sfNQmc9rwb2aPEy7RjZd9N/bYgG9GS8t97wTuzFA+C9iv24NtzYjdYch42LQUFr0Ik4/qsZd2O2rrP0Rn/uNJokiiKPpcL0omGDGoNKt907WekHB2TCzhinqLtgsXFCzbWMeowaU0RokpftV9+li1DU00Nofklq3Xqza18t6gvcOIkKDSCWjbY8TWpmbeXbk51MiSimpmofaVTIhktH0yESW4REhgiUQ6qXmC6k+8Bzkbl8yEmw+Fx66Ai/4GRRnaU1xedUczQ0dsq/UAocLdtjU1DYwdWt7udgCplNHYnMKi1zGMVCoknFRUo0iljCUbahk7pBwjJCYjqmWl0rWOUINJC5/toSxl4WKG9PHC/uE4KTO2NkdNgo3ba2cdkYySTFFSpHOKon9rtzYxd3n19mbAeIwZjpWOG0JNKn2FXvrqm4REfWMzS9fXothBWx5fOxwv83Y7Nk0GW5tSrN7csOO6tmJukcVbnrl4gm+Mjr1jROla5/aa6E6xxZ6kf2fpptRUymhobIaoptrYnOr0DcDZ8kSSjeJyOOFGuOc0+PlH4bLX8x2R66RsEk4umyyykUiI0kT7yWlFdT2Vg7OrQXVUy+aR0AwIzanQvNecTmypUIMKjwmPo7J0v1T43NxeC1Mswe3wIZtOhuxYuK2GZ9treOFAIS4zaEoZyzfV5+JUALBo7ZZedew5sZrqB+tq2WPUoG5/jThPJNnaaxqUD4dNS2Dd+6HJy/VJuWxTzneS6qzQDAhFWSS49sxbUc0+Oexst0y1AdvxeTq5tSwP+8ceA++t3syUykE7b5fhuDtuIVpUfnaqvSxYXcOUUYN2WJGuYaQTs5ltj7tFbJhFiVlAqF0u3VDLmCHl295frr5sxHki6YiLXwpNXLcfA6P2g68+3v4+zsV0V5LqrQmpJ8T7ZzI1n7Hz2jYlpKwneOuoRKL7j72yup5RseQRvwE4VzyRdETFWDj+v+HRy2HL6va3dy5HCvXyUE9w/ZMnko46aDo8/f9gwyLYvAoG75LviJwrGIWa4Fxu5bYrvy9KJGDEHpBqhluOgLs+k++InHMurzyRdMYFz8Gx34HatWFxzrl+zBNJZ33sG1AyENYtgI1L8h2Nc87ljSeSzkoWw8i9w/V4txwRhpx3zrl+yBNJV1zwLHz+DmjYDBs/yHc0zjmXF55Iumq/z8Gg0VC9DH5xuHe+O+f6HU8k3eEbc2CX/WDtfGhqaH9755zrQzyRdIficvji3aG/ZM07nkycc/2KJ5LuMnIKjJgCWzfDT/bPdzTOOddjPJF0p0tehYpxULMS/vnbfEfjnHM9whNJdxs6CUqHwMNfg1s/ke9onHMu5zyRdLevPg5fnx3uM1nzNtSub38f55zrxTyR5MKgSqjcB5q3wkPnhnG5nHOuj/JEkiulg2H47vD+s/CTj+Q7Guecy5mcJhJJ0yS9K2mBpKsyrJ8uaY2kOdFyXlR+TKxsjqR6SadE6+6WtCi27oBcvodOO+cx+PosGLQLVC+FWXflOyLnnMuJnM1HIikJ3AwcD1QBMyU9YmbzWmx6n5ldEi8ws+eAA6LjDAcWAH+ObXKlmT2Yq9i7jRRqJc1b4dHL4JVfwCUz8x2Vc851q1zWSA4BFpjZQjPbCtwLnNyJ43wBeMLMars1up7y1Sfgm2+HK7nWzod3Hst3RM45163aTSSSdpdUGj0+WtKlkoZmcexxwNLY86qorKXPS3pD0oOSJmRYfzpwT4uya6N9fpyOLUPcF0iaJWnWmjVrsgg3h4rLYdQ+UDII7j0LfvGx/MbjnHPdKJsayUNAs6Q9gF8Ck4HfZbGfMpRZi+d/AiaZ2f7AM8CvdjiANAb4MPBUrPhqYG/go8Bw4NuZXtzMZpjZVDObWllZmUW4OXbuU3DZmyGprJkHS17Nd0TOOdctskkkKTNrAj4L/MTMLgfGZLFfFRCvYYwHlsc3MLN1ZpYemOp24OAWxzgV+IOZNcb2WWFBA3AXoQmtdxgwPAzumCyBu06A2/yGRedc75dNImmUdAZwNvBoVFacxX4zgSmSJksqITRRPRLfIKpxpJ0EvN3iGGfQolkrvY8kAacAb2URS+E472m4ZBYkimDVW7Dm3XxH5JxzXZJNIjkHOBy41swWSZoM/Ka9naJazCWEZqm3gfvNbK6kaySdFG12qaS5kl4HLgWmp/eXNIlQo3mhxaF/K+lN4E1gJPC9LN5DYRk6IdRMENx6JMw4Lt8ROedcp8msZbdFGxtLw4AJZvZG7kLqflOnTrVZs2blO4ydrZoLtx0VaieXzoGKbFoMnXOuZ0iabWZT29sum6u2npdUEd3P8Tpwl6QfdUeQ/d4u+8KofaG5EW46CO74VL4jcs65DsumaWuImVUDnwPuMrODgU/mNqx+5KIX4SsPQ1M9rHoTbv+kT9frnOtVskkkRVEH96ls72x33Wnyx2HUh8LMiivfgMa6fEfknHNZyyaRXEPoMH/fzGZK2g14L7dh9UMXvwTnPQPWHJLJil7VDeWc68faTSRm9oCZ7W9mF0fPF5rZ53MfWj807iAYvT8oATOOhluOzHdEzjnXrmw628dL+oOk1ZJWSXpI0vieCK5fuuA5uPS1cNPi6rlw8+HeZ+KcK2jZNG3dRbiRcCxhrKw/RWUuV4aMDzWT4gFhOJWa1fmOyDnnWpVNIqk0s7vMrCla7gYKYPCqPu68P8O/vwNlQ2DdfPhpYU674pxz2SSStZK+JCkZLV8C1uU6MEeYZfGK92DACNiwCJ69FjpwA6lzzvWEbBLJVwmX/q4EVhDmBzknl0G5mKJSGLl3mGnxxRvhf/f2OeCdcwUlm6u2lpjZSWZWaWajzOwUws2Jrqd89XH493ehYjzUrIR7z4SGzfmOyjnngM7PkPjNbo3CtU+CYZPC1L3zn4Qf7gWbqvIdlXPOdTqRZJq0yuXaOY+FS4NH7RuGVPnZgXDrUfmOyjnXz3U2kXiPbz7929/DnfAojM/17pP5jsg5148VtbZC0mYyJwwB5TmLyGVn1D4w5iOweh7cc1po8vr67NAE5pxzPajVGomZDTazigzLYDNrNQG5HnTe06ETvnwYrH8ffn8+1FfnOyrnXD/T2aYtVyhKB8GV78Mx34E3H4AfToFlr+U7KudcP+KJpC9IJOETV8IuHw43LN5+bLgT3m9edM71AE8kfcnFfwvDqpQPC3fC/2AK/HJavqNyzvVxnkj6mgHD4VsL4bjgb20PAAAbmUlEQVTvQu0aWPFP+MURPoKwcy5nshlGfrOk6hbL0mho+d3a2XeapHclLZB0VYb10yWtkTQnWs6LrWuOlT8SK58s6VVJ70m6T1JJR990nyfBx/89NHWhMBz92vnQUJPvyJxzfVA2V1/9CFgO/I5w6e/pwGjgXeBO4OhMO0lKAjcDxwNVwExJj5jZvBab3mdml2Q4RJ2ZZRry9gbgx2Z2r6RbgXOBW7J4H/3PxX8L0/fedDBsWgo/2ANG7hnmiXfOuW6STdPWNDO7zcw2m1m1mc0ATjSz+4Bhbex3CLAgmlFxK3AvcHJXgpUk4FjgwajoV8ApXTlmn1dUCpe/BWf/KZrG9/XQd3LHp/IdmXOuj8gmkaQknSopES2nxta1dVnQOGBp7HlVVNbS5yW9IelBSRNi5WWSZkl6RVI6WYwANppZUzvHRNIF0f6z1qxZ0+Yb7BcmHwVjD4KKcbBlDayYA0v/ke+onHN9QDaJ5Czgy8DqaPky8CVJ5UCmJqm0TLdYt0w8fwImmdn+wDOEGkbaRDObCpwJ/ETS7lkeMxSazTCzqWY2tbLS5+EC4Nyn4JvzYPRHQj/KLz8FP9rX+06cc12SzTDyC83sX81sZLT8q5ktMLM6M/tbG7tWAfEaxnhCX0v82OvMrCF6ejtwcGzd8vTrA88DBwJrgaGS0n07Ox3TZeGiF8Id8QMroboKbpwMc//g95045zolm6u2xkdXaK2WtErSQ5LGZ3HsmcCU6CqrEkIn/SPxDSSNiT09CXg7Kh8mqTR6PBL4GDDPzAx4jjC5FsDZwMNZxOJaKh8KV74Hu+wPiWJ4YDrcsCusmZ/vyJxzvUw2TVt3ERLAWEJ/xJ+isjZF/RiXAE8REsT9ZjZX0jWSToo2u1TSXEmvA5cC06PyfYBZUflzwPWxq72+DXxT0gJCn8kvs3gPrjUX/xWuXgrDdwtNXDcf4s1dzrkOkbXTnCFpTsvLcDOVFbKpU6farFmz8h1G4atZA7ccAVtWQ7IEhu0GX3vFRxR2rp+SNDvqq25TNjWStZK+JCkZLV8C1nU9RFdwBlWG5q5znw7NXWvfCc1dM47Jd2TOuQKWTSL5KnAqsBJYQeifOCeXQbk8m3BIaO468YewtQaW/xOe/q43dznnMsrmqq0lZnaSmVWa2SgzOwX4XA/E5vIpkYRDzoexB8PAUfDST8PVXW/93q/ucs7toLODNn6zW6Nwheu8p+HK+TB6f0gWw4PnwPUTYenMfEfmnCsQnU0k3vva31z0V7hqaZjSt7EOfvlJuGEyrH4735E55/Kss4nE2zb6o0QSLn0Nvr0Yhu4K9ZvgF4eFsbs2Lsl3dM65PGl19F9Jm8mcMASU5ywiV/hKB8Flb0Dterj1SKheDj/ZHwaNhvP+DEMn5jtC51wPajWRmNngngzE9UIDhoexuzZVwe3HQc3KKKHsAhe+CIN3yXeEzrke4DMkuq4bMh6ueBcunxtqJTWr4Ed7w4/3g/rqfEfnnMsxTySu+wwZB1e8A1+fDeXDw2RaN06GV24JE2w55/qkdodI6Qt8iJQ8ufUTsHEx1G+EZCkMHh3uSTn/mXxH5pzLQrZDpGQz1a5znXPRC+HnL44Iw9Vv/CBc3fWjD0HF+NAx75zr9TyRuNz7t7+HnzOODc1d1ctg80r4331g8Fi44C/5jc851yWeSFzPueDZ8PO2o0MNZfMK2Lw83NhYMS7c9OgjDTvX63gicT3vwufDz9s/GWomNStg1Xr4/rhQQ7n4JSgqzWuIzrnseSJx+ZPudP/lNNiyJtRO1r0H142DwWPg/GfD0PbOuYLmicTl37lPhp9msPA5eOCrsGkJ/HBKuMqrYiyUDIRzHstvnM65jDyRuMIhwe7HwlWLw9zxv/rXMFvjllVQPgxuPQpKB3tCca7A+A2JrjBV7hnulr/y/TBAZMNmWPk6LH0lJBTnXMHwROIK24DhYYDI9IjDqeaQUK4bCz870GdtdK4A5DSRSJom6V1JCyRdlWH9dElrJM2JlvOi8gMkvSxprqQ3JJ0W2+duSYti+xyQy/fgCkTp4JBQJhwGw3YLZesXhjnlf7wf1G3Mb3zO9WM56yORlARuBo4HqoCZkh4xs3ktNr3PzC5pUVYLfMXM3pM0Fpgt6SkzS39aXGlmD+YqdlfA0h3zd30GGqph07Jwk+MPdgt3y1/wfKjFOOd6TC472w8BFpjZQgBJ9wInAy0TyU7MbH7s8XJJq4FKwL92uiDd4X7XZ2BrTTT8ygdw424wsDJcPuwd8871iFw2bY0DlsaeV0VlLX0+ar56UNKElislHQKUAO/Hiq+N9vmxJL9zrT875zG48AUYtS+MOTDMhVK7LvSjrJgDN00N96k453ImlzWSTGNdtBxq+E/APWbWIOki4FfAsdsOII0B/g8428xSUfHVwEpCcpkBfBu4ZqcXly4ALgCYONFn7Ovz4jWP+mqY8Ylw1/y692DDojBQ5KAxPq6XczmQyxpJFRCvYYwHlsc3MLN1ZpaeqOJ24OD0OkkVwGPAd8zsldg+KyxoAO4iNKHtxMxmmNlUM5taWel3R/crZRVw6T/hP5bDLvtB2dAwUOTyWXD9JLj58HD1l3OuW+SyRjITmCJpMrAMOB04M76BpDFmtiJ6ehLwdlReAvwB+LWZPZBpH0kCTgHeyuF7cL2ZFMbtgjCuV83KMHvjmnlw3ZhQQxm0CySLvS/FuS7IWSIxsyZJlwBPAUngTjObK+kaYJaZPQJcKukkoAlYD0yPdj8VOAoYISldNt3M5gC/lVRJaDqbA1yUq/fg+pD0uF53ngC168O4XhsXh6FYBlaGEYl9GBbnOsVnSHT9012fga1bQkLZsgYsBUrCyClw4Ys++rBz+AyJzrUtXvOoXQ8zjgmXD695B64dE+5FOemmMPaXJxXn2uSJxLkBw+Gy1+HOE6F+A2xZC3Xr4J7TQy1lYGXoS7nwBZ94y7kMPJE4l/bVx7c/btoKM46ORh9eHTrqrxsbEsp5z8DAkXkL07lC44nEuUyKSrbPNf/LT4daSs2qcE/KD/YIw9oPrITy4duHbXGun/JE4lx7zn0q/Ex30G9ZHTro69aDEnDj7jBgJJQPhUSRX/nl+h1PJM5lK54gUs1w2ydCQqldGxaAsmHw80NDjcVrKq6f8ETiXGckknDx38LjO08ME2/VrQ+1lbXvxGoqI0LzVyLpNRXXZ3kica6r4p30qeYwg2Pt2jB4ZO3akFSUgJs+Cuc9HZrAnOtDPJE4150SSfi3aFiWO08Mc6bUro0GkJwPN0wKY38NGBGW8/6c13Cd6w6eSJzLlXhN5c4Tw7wp6ZrK+gVh+f7EcCnxBc+HwSad64U8kTjXE+JJxSzco5Ju+lr/fpgyeOAoOOt+GPORvIXpXGd4InGup0nhLvm0ZbPhd6eHjvrbjoLiAaH5q3wonPs0lA7KX6zOZSGX85E457Ix7mC48j341kIYNjkMa795BayeB98fH/pV5j0MjfX5jtS5jLxG4lyhKB8G35gTHjfWwZJX4OGvhXtV7v9KuPIrfUf9hX8Nd987VwB8GHnnCl2qGRY+B28/CnN+A82N4Q76gaPgrAdgl319MEmXE9kOI++JxLnepLkJ3n8W/nhR6KwHKCoLlxJ/7naYcCgkvaHBdQ9PJDGeSFyftGUdzPsD/OV7UL8RsFBT+fAXYa8TwlwqpYPzHaXrxTyRxHgicX1ew+YwL33dOqjbAKkmQOHqr+O+A3ueAEPG5TtK18t4IonxROL6leYmWPoq/P780PzVFF3tVTwwTOL1xbth7EGQ8Is2Xds8kcR4InH9lhmsnQ/zn4QXfxiGbAFIFIcrwMqHh/G//K56l4EnkhhPJM5FateHzvr5T8LcP8SawIbA0VfB3p+BoRPzHaUrENkmkpzWbSVNk/SupAWSrsqwfrqkNZLmRMt5sXVnS3ovWs6OlR8s6c3omD+T/LpH57I2YDh8+Avw+TvgP1fB9MehYiw0N8CTV8FPPgzXjYOffATWL8x3tK6XyFmNRFISmA8cD1QBM4EzzGxebJvpwFQzu6TFvsOBWcBUwIDZwMFmtkHSP4BvAK8AjwM/M7Mn2orFayTOZWHd+/D2I6EJbGtNKCsuD5N1ffYWmHiE3wTZzxRCjeQQYIGZLTSzrcC9wMlZ7vtp4GkzW29mG4CngWmSxgAVZvayhQz4a+CUXATvXL8zYnc48nL4j2XwjTfg09dBsjQM1/Lrk+Ha0XDvWTD7V+HSY+ciubxzaRywNPa8Cjg0w3afl3QUofZyuZktbWXfcdFSlaF8J5IuAC4AmDjR23yd65Bhu8LhXwtLQw0sehEWPA3//C288yj86dJwafEn/x/s/a8wqDLfEbs8ymWNJFPfRct2tD8Bk8xsf+AZ4Fft7JvNMUOh2Qwzm2pmUysr/Y/cuU4rHQR7nwj/8mP4zqowzlfF+HBZ8aOXww/3CPOq/PQAWPkWpFL5jtj1sFzWSKqACbHn44Hl8Q3MLF4/vh24Ibbv0S32fT4qH9/WMZ1zOSTBmP3hm3PDpcWr5oaRiV++CTYsgls/BkWlcOQ3Yb/Pw8gp+Y7Y9YBcdrYXEZqrjgOWETrbzzSzubFtxpjZiujxZ4Fvm9lhUWf7bOCgaNPXCJ3t6yXNBL4OvErobL/JzGKzBu3MO9ud6wEbl8LC5+HNB2BRNN/K8N3DcC17ToOJh4Uh8l2vkW1ne85qJGbWJOkS4CkgCdxpZnMlXQPMMrNHgEslnQQ0AeuB6dG+6yX9DyH5AFxjZuujxxcDdwPlwBPR4pzLt6ET4KAvh2VTFbz7RFj+MQNe/nmYz/5Dp4ThWqZ8MtwQ6foEvyHROZdbDZvh/efCTZBv3A+pxlC+65Gw1zSY8unQBOa3hBUcv7M9xhOJcwUi1QzLXoP5T8Art0BjbSgvKoODzg7NYJM+7kPhFwhPJDGeSJwrUBuXwHt/hvl/DpcXWwoGjIR9Twmd9RMO88El88gTSYwnEud6gcY6WPAM/OkyqFsfkkqyBA65IIwBNm6q31nfwzyRxHgica6XaagJfSpvPRQ67LEwZ31pBRx5GUw+CsYcEDrwXc54IonxROJcL1a3ERb/DR6/Auo3be9XUTIklsO/BnscB2MP9A77buaJJMYTiXN9yOZVsPivYdiWpf+ANW+H8mQJHPjlcBf+pI+HGyNdl3giifFE4lwftmUt3DktzLVSvyH0rSgZ7lM5/r9h9+OgYky+o+yV8n5DonPO9YiBI+Hr0RfFxrpQU3nk62Hu+oe/Fsp32Q92PybcuzLxMCgfmr94+yCvkTjn+qb0WGALnoG//iiaZjj6vBu9P0w6Enb9WPjpiSUjb9qK8UTinKOxDqpmwQcvhc77qplhBGMEux0dLjHe60QYknFmin7JE0mMJxLn3E6aGmDZbJj/FLx6GzTVhfKSQfCxy8J4YKM/0q9viPREEuOJxDnXrjXzw6Rd7zwGy6LPi0TR9gm8djsmDEzZj3giifFE4pzrkM2rwpD4C58LN0U2bw3lI/YICWX3Y8IlxmUVeQ0z1zyRxHgicc51mhmseSeMYPz+s/D+X8IlxgClg+Gwr4XEMu7gPjffiieSGE8kzrlu09QQboRc+FxILstfC+VKQtkQOPrqkFhG7NHr77T3RBLjicQ5lzO168O9K098O9wQ2dQQypOloX9l2nWw+7EwYHh+4+wETyQxnkiccz1m/cJQU3nuWqjfGOZgASgdEpLJVx6GYbvmN8YseSKJ8UTinMuL5iZY/k9493F49dbtA04WD4Qjvh6awMYeVLDD43siifFE4pwrCOveD5cXv/MYLH0llCkRrgCb9PFwl/24gwpmwElPJDGeSJxzBWfLOljy93CX/Wu/jg2PnwgJZVtiOThviaUgEomkacBPgSRwh5ld38p2XwAeAD5qZrMknQVcGdtkf+AgM5sj6XlgDBDdhsqnzGx1W3F4InHOFbza9fBBPLFsCeVKRGOCRYll/NQeSyx5TySSksB84HigCpgJnGFm81psNxh4DCgBLjGzWS3Wfxh42Mx2i54/D1zRcru2eCJxzvU6tethycshscz+1Y6JpWRwuNT4s7eEKYiLy3ISQiEMI38IsMDMFkYB3QucDMxrsd3/ADcCV7RynDOAe3IVpHPOFaQBw8NAknt/BqZ9PwyL/0GUWBb/FVa+CXd/BtCOIxlPOLTHO+9zmUjGAUtjz6uAQ+MbSDoQmGBmj0pqLZGcRkhAcXdJagYeAr5nGapVki4ALgCYOHFi596Bc84VivJhYfbHvU8Mz+s2wJJXtieWF26AF64PN0buOS0MOrnH8T0yPlguE0mmWzq3feBLSgA/Bqa3egDpUKDWzN6KFZ9lZsuiJrGHgC8Dv97phcxmADMgNG115g0451zBKh8Ge50QFghz23/wUph/5b1n4N3HQvn5z4UrwXIol4mkCoinwvHA8tjzwcB+wPMKwwiMBh6RdFKs/+N0WjRrmdmy6OdmSb8jNKHtlEicc65fKR+6vSnMDNbOD2ODjd4/5y+dy0QyE5giaTKwjJAUzkyvNLNNwMj085ad6FGN5YvAUbFtioChZrZWUjHwL8AzOXwPzjnX+0hQuVdYekDOEomZNUm6BHiKcPnvnWY2V9I1wCwze6SdQxwFVKU76yOlwFNREkkSksjtOQjfOedclvyGROeccxlle/lv/51D0jnnXLfwROKcc65LPJE455zrEk8kzjnnusQTiXPOuS7xROKcc65L+sXlv5LWAB/kOw7CDZhr8x1EBoUaFxRubB5XxxVqbB5X63Y1s8r2NuoXiaRQSJqVzTXZPa1Q44LCjc3j6rhCjc3j6jpv2nLOOdclnkicc851iSeSnjUj3wG0olDjgsKNzePquEKNzePqIu8jcc451yVeI3HOOdclnkicc851iSeSHJI0VNKDkt6R9LakwyUNl/S0pPein8PyENflkuZKekvSPZLKJE2W9GoU132SSnogjjslrZb0Vqws4/lR8DNJCyS9ISmnc4e2EtsPot/lG5L+IGlobN3VUWzvSvp0T8YVW3eFJJM0MnreY+estbgkfT06J3Ml3Rgr75Hz1Vpskg6Q9IqkOZJmSTokKu+RcyZpgqTnos+FuZK+EZUXxN9/h5mZLzlagF8B50WPS4ChwI3AVVHZVcANPRzTOGARUB49vx+YHv08PSq7Fbi4B2I5CjgIeCtWlvH8ACcCTwACDgNezUNsnwKKosc3xGL7EPA6YeK1ycD7QLKn4orKJxAmkfsAGNnT56yV83UMYfK50uj5qJ4+X23E9mfghNh5er4nzxkwBjgoejwYmB+dl4L4++/o4jWSHJFUQfgD/iWAmW01s43AyYQEQ/TzlDyEVwSUR1MXDwBWAMcCD/ZkXGb2IrC+RXFr5+dk4NcWvAIMlTSmJ2Mzsz+bWVP09BVgfCy2e82swcwWAQuAQ3oqrsiPgW8B8atneuyctRLXxcD1ZtYQbbM6FlePnK82YjOgIno8BFgeiy3n58zMVpjZa9HjzcDbhC95BfH331GeSHJnN2ANcJekf0q6Q9JAYBczWwHhjwkY1ZNBmdky4IfAEkIC2QTMBjbGPiSrCH/U+dDa+RkHLI1tl88YAb5K+IYIeY5N0knAMjN7vcWqfJ+zPYGPR02mL0j6aIHEBXAZ8ANJSwn/H67OV2ySJgEHAq/Se/7+d+CJJHeKCNXpW8zsQGALoaqaV1Gb68mEJoWxwEDghAybFtp14cpQlpcYJf0n0AT8Nl2UYbMeiU3SAOA/ge9mWp2hrCfPWREwjNAUcyVwvyQVQFwQakuXm9kE4HKilgN6ODZJg4CHgMvMrLqtTTOUFcz/UU8kuVMFVJnZq9HzBwmJZVW6Shr9XN3K/rnySWCRma0xs0bg98ARhKpyUbTNeLZX9Xtaa+enitAPkJaXGCWdDfwLcJZFjdd5jm13wpeC1yUtjl77NUmj8xwX0ev/PmqO+QeQIgxEmO+4AM4m/O0DPMD2prUei01SMSGJ/NbM0rEU9N9/azyR5IiZrQSWStorKjoOmAc8QvgjJvr5cA+HtgQ4TNKA6NthOq7ngC/kMa601s7PI8BXoqtXDgM2pZsAeoqkacC3gZPMrDa26hHgdEmlkiYDU4B/9ERMZvammY0ys0lmNonwgXNQ9PeX73P2R0LfG5L2JFxwspY8nq+Y5cAnosfHAu9Fj3vknEX/934JvG1mP4qtKti//zblu7e/Ly/AAcAs4A3Cf6phwAjgL4Q/3L8Aw/MQ138D7wBvAf9HuHpmN8J/5gWEb2ilPRDHPYR+mkbCB+C5rZ0fQtX+ZsIVPm8CU/MQ2wJCO/WcaLk1tv1/RrG9S3Q1UE/F1WL9YrZftdVj56yV81UC/Cb6O3sNOLanz1cbsR1J6Bt8ndA3cXBPnrPo9S36bEj/PZ1YKH//HV18iBTnnHNd4k1bzjnnusQTiXPOuS7xROKcc65LPJE455zrEk8kzjnnusQTiXPOuS7xROJcjkRDlZ8Ye36SpG4ZJkfSZdHwKM7lnd9H4lyOSJpOuHHskhwce3F07LUd2CdpZs3dHYtzXiNx/Z6kSdEEQ7dHkwz9WVJ5K9vuLulJSbMl/VXS3lH5FxUmCntd0osKE4NdA5wWTZ50mqTpkn4ebX+3pFuiyY0WSvqEwgRMb0u6O/Z6tyhMvDRX0n9HZZcSBtx8TtJzUdkZkt6MYrghtn+NpGskvQocLul6SfOiyZF+mJsz6vqdfN9a74sv+V6ASYTRfA+Int8PfKmVbf8CTIkeHwo8Gz1+ExgXPR4a/ZwO/Dy277bnwN3AvYShL04GqoEPE77czY7Fkh4iIwk8D+wfPV/M9qFQxhLGUKskjLj7LHBKtM6AU9PHIgxJonicvvjS1cVrJM4Fi8xsTvR4NiG57CAa8vsI4AFJc4DbCDPdAbwE3C3pfMKHfjb+ZGZGSEKrLAzAmALmxl7/VEmvAf8E9iXMotfSRwkz/K2xMKfMbwmTqgE0E0aYhZCs6oE7JH0OqN3pSM51QlH7mzjXLzTEHjcDmZq2EoQJwA5oucLMLpJ0KPAZYI6knbZp4zVTLV4/BRRFI+NeAXzUzDZETV5lGY6Taa6KtHqL+kXMrElhbvLjgNOBS4hG53WuK7xG4lyWLEw8tEjSFyEMBS7pI9Hj3c3sVTP7LmGo9AnAZsJ83J1VQZgQbZOkXdhxArL4sV8FPiFppKQkcAbwQsuDRTWqIWb2OGGGwGySnXPt8hqJcx1zFnCLpO8AxYR+jtcJ07ZOIdQO/hKVLQGuiprBvt/RFzKz1yX9k9DUtZDQfJY2A3hC0gozO0bS1YQ5ZQQ8bmaZ5pMZDDwsqSza7vKOxuRcJn75r3POuS7xpi3nnHNd4k1bzmUg6WbgYy2Kf2pmd+UjHucKmTdtOeec6xJv2nLOOdclnkicc851iScS55xzXeKJxDnnXJf8f3jAkF0r32JPAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106c2668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "cvresult=cvresult.iloc[50:]\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "\n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "x_axis = range(50, cvresult.shape[0] + 50)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "#pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
